//
//  main.m
//  03-NsstringAndNSValue
//
//  Created by dllo on 16/7/6.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    
    
    //查看头文件或API，他们的初始化、构造器，基本上都放在一起
    //当我们拿到一个新的类，你需要去查看这个类的初始化或者构造器
//    NSString *string = [[NSString alloc] init];
//    
//    NSString *str = [NSString string];
//    NSUInteger length = string.length;
//    
////    [string characterAtIndex:0];
//    
//    [str isEqualToString:string];
////    [str substringFromIndex:0];
//    [str stringByAppendingString:@"dhfkjdhf"];
//    [str stringByAppendingFormat:@"dfjg%@",str];
//    
//    NSString *pathString = @"users/local/bin";
//    //如果字符串方法带有返回值，操作的不是元字符串，而是生成的新字符串
//    [str stringByAppendingPathComponent:@"/name.plist"];
//    
//    NSLog(@"%@",pathString);
////    [pathString stringByReplacingCharactersInRange:<#(NSRange)#> withString:<#(nonnull NSString *)#>];
//    
//    
//     NSInteger number = [pathString integerValue];
//    NSLog(@"%ld",number);
//    double doubleValue = [pathString doubleValue];
//    NSLog(@"%lf",doubleValue);
//    [pathString floatValue];
//    [pathString boolValue];
//    
//    
//    [pathString lowercaseString];
//    [pathString uppercaseString];//大写
//    
//    int age = 10;
//    NSNumber *ageNumber = [[NSNumber alloc] initWithInt:age];
//    NSNumber *ageNumber1 = [NSNumber numberWithInt:age];
//    NSNumber *ageNumber2 = @(age);
    
//    NSString *str = [[NSString alloc] initWithFormat:@"1330184198501184115"];
//    NSString *year = [str substringWithRange:NSMakeRange(7, 4)];
//    NSString *month = [str substringWithRange:NSMakeRange(11, 2)];
//    NSString *day = [str substringWithRange:NSMakeRange(13, 2)];
//    NSNumber *year1 = [NSNumber numberWithChar:year];
////    NSInteger age = 2016 - year1;
//    NSLog(@"%@年%@月%@日 年龄",year,month,day);
    
    //1.数组
    
    //初始化方法initWithObjects:后面填入的参数一定是对象类型，可变参数
    //顺序填入你需要的元素
    //初始化结束，以nil为判别标准
    //初始化
//    NSArray *array = [[NSArray alloc] initWithObjects:@"123",nil,@"234",nil];//count为1
//    NSLog(@"%ld",array.count);
//    NSString *numberString = [array objectAtIndex:0];//取下标为0的数组元素，就是@“123”
//    
//    NSString *numberStr = array[0];
//    NSUInteger indexOfObject = [array indexOfObject:@"123"];//根据值取对应的下标
//    NSLog(@"%ld",indexOfObject);
//    
//    BOOL isHaveObject = [array containsObject:@"123"];//判断对象是否存在于数组中
//    
//    NSLog(@"%@",isHaveObject ? @"YES" : @"NO");
    
    
    
    
    //构造器方法
//    NSArray *arr = [NSArray arrayWithObjects:@"98",@"22",@"232",@"234",nil];
//    //字面量
//    NSArray *myArray = @[@"123",@"456",@"345",@"234"];
//    
//    NSObject *objc = nil;
//    NSArray *yArray = @[@"23",objc,@"345"];
//    NSLog(@"%@",myArray);
    
//    字面量可以识别对象是否为空值，如果为空，字面量会崩溃。但是，初始化方法会识别nil为结束，并不会产生问题，造成数据丢失。
    
    
//    NSArray *arr = @[@"sd",@"vb",nil];//错误
//    NSLog(@"%@",arr);
    //取值相关
    
    //不可变数组，改变元素（会生出新的数组，不会在源数组基础上修改）
    //数组中添加另外一个数组中的所有Object
//    array = [array arrayByAddingObject:@"323"];
//    NSLog(@"%@",array);
//    
//    
//    [array firstObject];//如果数组为空，返回的对象为空，并且不会崩溃。
//    [array lastObject];
//    
//    NSMutableArray *mutableArray = [@[] mutableCopy];//不推荐使用字面量方法，可变数组只使用初始化方法或者便利构造器
//    
//    [mutableArray addObject:@"123"];//可变数组改变元素
//    [mutableArray insertObject:@"wutian" atIndex:0];//第一个元素是wutain
//    [mutableArray removeObjectAtIndex:0];
//    [mutableArray removeLastObject];
//    [mutableArray removeAllObjects];
//    
//    [mutableArray replaceObjectAtIndex:0 withObject:@"悟空"];//使用替换位置数组不能为空,用悟空替换数组第一个元素
//    
//    
//    //不可变调用时对象本身不变，生成一个新的对象，可变不生成新的对象，在本身修改，可变继承不可变
//    
//    NSString *urlString = @"www.a123cb.com";
//    NSArray *urlArray = [urlString componentsSeparatedByString:@"."];//根据那个字串截取那个字串就会消失
//    NSLog(@"%@",urlArray);
//    
//    NSArray *nameArray = @[@"八戒",@"老唐",@"老沙"];
//    NSString *nameString = [nameArray componentsJoinedByString:@"&"];//把数组拼接成字符串
//    NSLog(@"%@",nameString);
    
    
    
    
    return 0;
}
